/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package memoriavirtual;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Pedro Freitas
 */
public class Arquivo {

    private ArrayList<Processo> processos;
  

    public DefaultTableModel carregaInstrucoes(String nome) {
        DefaultTableModel resp = new DefaultTableModel();
        try {
            File file = new File(nome);
            FileInputStream in = new FileInputStream(file);
            Scanner scanner = new Scanner(in);
            Object[] identificadores = {"Processo", "Tipo", "Endereço Lógico"};
            resp.setColumnIdentifiers(identificadores);
            while (scanner.hasNext()) {
                resp.addRow(scanner.nextLine().split(" "));
            }
        } catch (Exception e) {
            e.getMessage();
            JOptionPane.showMessageDialog(null, "Erro na leitura do arquivo de intrucoes!");       
        }
        return resp;
    }

    public DefaultTableModel carregaProcessos(String nome,int tamQuadro) {
        DefaultTableModel resp = new DefaultTableModel();
        try {
            File file = new File(nome);
            FileInputStream in = new FileInputStream(file);
            
            Object[] identificadores = {"Processo", "Tamanho"};
            resp.setColumnIdentifiers(identificadores);
            Scanner scanner = new Scanner(in);
            processos = new ArrayList<>();
            String[] linha;
            double n_pag;
            while (scanner.hasNext()) {
                linha = scanner.nextLine().split(" ");
                n_pag = Integer.parseInt(linha[1])/tamQuadro;
                if(Integer.parseInt(linha[1])%tamQuadro != 0) n_pag++; 
                processos.add(new Processo(linha[0], Integer.parseInt(linha[1]), new Pagina[(int)n_pag]));
                resp.addRow(linha);
            }
        } catch (FileNotFoundException | NumberFormatException e) {
            e.getMessage();
            JOptionPane.showMessageDialog(null, "Erro na leitura do arquivo de processos!"); 
        }
        return resp;
    }

    public ArrayList<Processo> getProcessos() {
        return processos;
    }

}
